export * from "./storage";

/**
 * @description 时间格式化
 * @param dateTime { number } 时间戳
 * @param fmt { string } 时间格式
 * @return { string }
 */
// yyyy:mm:dd|yyyy:mm|yyyy年mm月dd日|yyyy年mm月dd日 hh时MM分等,可自定义组合
export const timeFormat = (dateTime: number, fmt = 'yyyy-mm-dd') => {
    // 如果为null,则格式化当前时间
    if (!dateTime) {
        dateTime = Number(new Date())
    }
    // 如果dateTime长度为10或者13，则为秒和毫秒的时间戳，如果超过13位，则为其他的时间格式
    if (dateTime.toString().length == 10) {
        dateTime *= 1000
    }
    const date = new Date(dateTime)
    let ret
    const opt: any = {
        'y+': date.getFullYear().toString(), // 年
        'm+': (date.getMonth() + 1).toString(), // 月
        'd+': date.getDate().toString(), // 日
        'h+': date.getHours().toString(), // 时
        'M+': date.getMinutes().toString(), // 分
        's+': date.getSeconds().toString() // 秒
    }
    for (const k in opt) {
        ret = new RegExp('(' + k + ')').exec(fmt)
        if (ret) {
            fmt = fmt.replace(ret[1], ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, '0'))
        }
    }
    return fmt
}

/**
 * 格式化数字为货币字符串。
 *
 * 此函数将输入的数字格式化为带有两位小数的字符串，使用浏览器的本地设置进行格式化。
 *
 * @param value - 需要格式化的数字。
 * @returns 格式化后的货币字符串，例如 "1,234.56" 或 "1.234,56"。
 *
 * @example
 * ```typescript
 * const formattedValue = getCurrency(1234.56); // "1,234.56" 或根据本地化设置格式
 * ```
 */
export const getCurrency = (value: number) => {
    return Number(value)?.toLocaleString(undefined, {
        minimumFractionDigits: 2,
        maximumFractionDigits: 2
    })
}

export const queryString = (params:any) => {
    return Object.keys(params)
        .map(key => `${key}=${params[key]}`)
        .join('&');
}
